package com.itheima.manager.service;

import com.itheima.manager.dao.DiTieDao;
import com.itheima.manager.domain.DitieZhan;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class DiTieService {
    //创建一个持久层对象,与数据打交道
    private DiTieDao dao = new DiTieDao();

    //判断一个地铁编号是否存在
    public boolean isExist(String id) {
        //1.使用标记位思想,假定地铁编号不存在
        boolean flag = false;
        //2.查找地铁编号是否存在
        //2.1查找所有的地铁站信息
        ArrayList<DitieZhan> list = dao.selectFindAllDt();
        //2.2如果没有地铁站信息,返回false代表没有找到
        if (list == null) {
            return flag;
        }
        //2.2判断地铁编号id是否存在,遍历集合,查找地铁编号id
        for (DitieZhan dt : list) {
            if (dt != null && id.equals(dt.getId())) {
                flag = true;
            }
        }
        //输出是否存在地铁编号id,true代表存在,false代表不存在
        return flag;
    }

    public ArrayList<DitieZhan> selectFindAllDt() {
        ArrayList<DitieZhan> ditieZhans = dao.selectFindAllDt();
        boolean flag = false;
        for (DitieZhan ditieZhan : ditieZhans) {
            if (ditieZhan != null) {
                flag = true;
                break;
            }
        }
        if (flag) {
            Collections.sort(ditieZhans, (dt1, dt2) -> {
                if (dt1 != null & dt2 != null) {
                    return dt1.getId().compareTo(dt2.getId());
                } else {
                    return 0;
                }
            });
            return ditieZhans;
        } else {
            return null;
        }


    }

    //业务层的添加地铁站信息的方法
    public boolean addDiTieZhan(DitieZhan ditie) {
        //使用标记位思想,默认添加不成功
        boolean flag = false;
        //获取添加前的地铁站信息数量
        int before = dao.selectFindAllDt().size();
        //使用持久层执行添加功能
        dao.addDiTieZhan(ditie);
        //获取添加后的地铁站信息数量
        int after = dao.selectFindAllDt().size();
        //判断添加后是不是比添加前多一条数据
        if (after - before == 1) {
            flag = true;
        }
        //返回添加状态
        return flag;
    }

    public boolean deleteDiTieZhan(String id) {
        //使用标记位思想,默认删除失败
        boolean flag = false;
        //获取添加前的地铁站信息数量
        int before = dao.selectFindAllDt().size();
        //使用持久层执行删除功能
        dao.deleteDiTieZhan(id);
        //获取添加后的地铁站信息数量
        int after = dao.selectFindAllDt().size();
        if (after - before == -1) {
            flag = true;
        }
        //返回删除的结果
        return flag;
    }

    //业务层的修改功能
    public boolean updateDiTieZhan(String id, DitieZhan dt) {
        //使用标记位思想,默认修改失败
        boolean flag = false;
        //使用持久层执行修改功能
        flag = dao.updateDiTieZhan(id, dt);
        //返回修改结果
        return flag;
    }
}
